﻿using System.Text;

namespace PmSoft.Utilities
{
    public static class VerifyFileExtensionName
    {
        private static IDictionary<string, string> dics = new Dictionary<string, string>();

        static VerifyFileExtensionName()
        {
            dics.Add("FFD8FFE0", ".jpg");
            dics.Add("89504E47", ".png");
            dics.Add("47494638", ".gif");
            dics.Add("49492A00", ".tif");
            dics.Add("424D", ".bmp");

            //PS和CAD
            dics.Add("38425053", ".psd");
            dics.Add("41433130", ".dwg"); // CAD
            dics.Add("252150532D41646F6265", ".ps");

            //办公文档类
            dics.Add("D0CF11E0", ".doc"); //ppt、doc、xls
            dics.Add("504B0304", ".docx");//pptx、docx、xlsx    

            /**注意由于文本文档录入内容过多，则读取文件头时较为多变-START**/
            dics.Add("0D0A0D0A", ".txt");//txt
            dics.Add("0D0A2D2D", ".txt");//txt
            dics.Add("0D0AB4B4", ".txt");//txt        
            dics.Add("B4B4BDA8", ".txt");//文件头部为汉字
            dics.Add("73646673", ".txt");//txt,文件头部为英文字母
            dics.Add("32323232", ".txt");//txt,文件头部内容为数字
            dics.Add("0D0A09B4", ".txt");//txt,文件头部内容为数字
            dics.Add("3132330D", ".txt");//txt,文件头部内容为数字      
            /**注意由于文本文档录入内容过多，则读取文件头时较为多变-END**/


            dics.Add("7B5C727466", ".rtf"); // 日记本

            dics.Add("255044462D312E", ".pdf");

            //视频或音频类
            dics.Add("3026B275", ".wma");
            dics.Add("57415645", ".wav");
            dics.Add("41564920", ".avi");
            dics.Add("4D546864", ".mid");
            dics.Add("2E524D46", ".rm");
            dics.Add("000001BA", ".mpg");
            dics.Add("000001B3", ".mpg");
            dics.Add("6D6F6F76", ".mov");
            dics.Add("3026B2758E66CF11", ".asf");

            //压缩包
            dics.Add("52617221", ".rar");
            dics.Add("1F8B08", ".gz");

            //程序文件
            dics.Add("3C3F786D6C", ".xml");
            dics.Add("68746D6C3E", ".html");
            dics.Add("7061636B", ".java");
            dics.Add("3C254020", ".jsp");
            dics.Add("4D5A9000", ".exe");


            dics.Add("44656C69766572792D646174653A", ".eml"); // 邮件
            dics.Add("5374616E64617264204A", ".mdb");//Access数据库文件

            dics.Add("46726F6D", ".mht");
            dics.Add("4D494D45", ".mhtml");
        }

        /// <summary>
        /// 根据contentType获取mediaType
        /// </summary>
        /// <param name="contentType"></param>
        /// <returns></returns>
        public static string GetMediaType(string contentType)
        {
            if (dics.ContainsKey(contentType))
                return dics[contentType];
            else
            {
                return string.Empty;
            }
        }
    }
}
